<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>014_拖拽</title>
    <style type="text/css">
        #box1 {
            width: 100px;
            height: 100px;
            background-color: red;
            position: absolute;  /*开启绝对定位*/
        }
        #box2 {
            width: 100px;
            height: 100px;
            background-color: yellowgreen;
            position: absolute;
            left: 200px;
            top: 200px;
        }
    </style>
</head>
<body>
    <div id="box1"></div>
    <div id="box2"></div>

<script type="text/javascript">

    /**
     * 拖拽的流程：
     *  1. 当鼠标在被拖拽元素上按下时，开始拖拽onmousedown
     *  2. 当鼠标移动时被拖拽元素跟随鼠标移动
     *  3. 当鼠标松开时，被拖拽元素固定在当前位置
     */
    var box1 = document.getElementById("box1");
    box1.onmousedown = function (event) {
        if(!event) {
            event = window.event;
        }
        // 求出div的偏移量
        var ol = event.clientX - box1.offsetLeft;
        var ot = event.clientY - box1.offsetTop;

        // 当鼠标移动时被拖拽元素跟随鼠标移动 为document绑定一个onmousemove事件
        document.onmousemove = function (event) {
            if(!event) {
                event = window.event;
            }
            var left = event.clientX - ol;
            var top = event.clientY - ot;
            box1.style.left = left + "px";
            box1.style.top = top + "px";
        };

        // 为元素绑定一个鼠标松开事件
        document.onmouseup = function () {
            // 取消document的onmousemove事件
            document.onmousemove = null;
            document.onmouseup = null;

            // alert("鼠标被松开了， 鼠标松开事件应该只触发一次");
        }
        /**
         * 当我们拖拽一个网页中的内容时，浏览器会默认去搜索引擎中搜索内容，此时会导致拖拽功能异常，这个是浏览器提供的默认行为
         * 如果不希望发生这个行为，则可以通过return false来取消默认行为
         *
         * 但是这个对IE8不起作用
         */
        return false;
    }

</script>
</body>
</html>